perm filename VIXSAI.SAI[VIS,HPM] blob
sn#463431 filedate 1979-08-07 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 entry VIDXGQ
C00005 ENDMK
C⊗;
entry VIDXGQ;
BEGIN
EXTERNAL INTEGER PROCEDURE EXSWAP(STRING FILE);
external INTEGER PROCEDURE PUTPFL(REFERENCE INTEGER PICTURE; STRING FILNAM; INTEGER MODE(1));
EXTERNAL BOOLEAN PROCEDURE VIDXG(REFERENCE INTEGER PIC; INTEGER I0,J0,PLEN,NCOPY);
EXTERNAL BOOLEAN PROCEDURE VIDXGP(REFERENCE INTEGER PIC; INTEGER I0,J0,PLEN,NCOPY);
INTEGER PROCEDURE MANYJOB;
BEGIN
INTEGER I,J,K;
J←0;
FOR I←1 STEP 1 UNTIL '77 DO
BEGIN K←CALL(I,"JBTSTS"); IF (K LAND '40000000000) THEN J←J+1; END;
RETURN(J);
END;
BOOLEAN PROCEDURE VIDXGF(REFERENCE INTEGER PIC; INTEGER I0,J0,PLEN,NCOPY);
BEGIN WHILE ¬VIDXGP(PIC,I0,J0,PLEN,NCOPY) DO CALL(30,"SLEEP"); RETURN(TRUE); END;
INTERNAL BOOLEAN PROCEDURE VIDXGQ(REFERENCE INTEGER PIC; INTEGER I0,J0,PLEN,NCOPY);
IF VIDXG(PIC,I0,J0,PLEN,NCOPY) THEN RETURN(TRUE) ELSE
IF MANYJOB>58 THEN RETURN(VIDXGF(PIC,I0,J0,PLEN,NCOPY)) ELSE
BEGIN
PRELOAD_WITH 0; OWN INTEGER ARRAY CNT[1:1];
INTEGER I;
INTEGER ARRAY MESSAGE[1:32], HD[1:2];
PRINT(" queueing"&'15&'12);
comment CREATE VIDXGQ JOB;
I←EXSWAP("DSK:VIDXGQ.DMP[1,3]");
IF I=0 THEN BEGIN PRINT("no job slots for VIDXGQ!"&'15&'12);
RETURN(VIDXGF(PIC,I0,J0,PLEN,NCOPY)); END;
comment TELL WHAT SIZE;
MESSAGE[1]←CALL(0,"PJOB")*10000+CNT[1]; CNT[1]←CNT[1]+1;
MESSAGE[2]←I0;
MESSAGE[3]←J0;
MESSAGE[4]←PLEN;
MESSAGE[5]←NCOPY;
PUTPFL(PIC,"DSK:"&CVS(MESSAGE[1])&".TMP[TMP,HPM]",2);
HD[1]←I; HD[2]←LOCATION(MESSAGE[1]);
WHILE CALL(I,"GETNAM")≠CVSIX("READY!") DO CALL(0,"SLEEP");
I←0; START_CODE MAIL 0,ACCESS(HD[1]); comment SEND; SETOM I; END;
SETFORMAT(0,7);
IF I≠0 THEN
BEGIN
PRINT("couldn't send message to VIDXGQ"&'15&'12);
RETURN(FALSE);
END;
RETURN(TRUE);
END;
END;